import logging
import os
import time
from lib.config import config

class Logger(object):
    __logName = None

    def __new__(cls, *args, **kwargs):
        if cls.__logName is not None:
            return cls.__logName
        ## 创建日志记录器记录debug级别
        logger = logging.getLogger("testLogger")
        logger.setLevel(getattr(logging, config["logger"]["loggerLevel"].upper()))

        ## 创建控制器处理器打印在终端
        sh = logging.StreamHandler()
        sh.setLevel(getattr(logging, config["logger"]["shLevel"].upper()))

        ## 创建log文件夹位置，根目录 没有就新建
        root_path=os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
        dir_path=os.path.join(root_path, "log")
        if not os.path.exists(dir_path):
            os.makedirs(dir_path)

         ##定义文件名称，每天新建一个日志文件，a-追加写入  w-覆盖写入
        fh=logging.FileHandler(os.path.join(dir_path, time.strftime("%Y_%m_%d") + ".log"),encoding="utf-8")
        fh.setLevel(getattr(logging, config["logger"]["fhLevel"].upper()))

        ## 打印日志的格式
        lf=logging.Formatter(config["logger"]["fmt"], config["logger"]["dateFmt"])

        ## 设置处理器打印日志的格式
        fh.setFormatter(lf)
        sh.setFormatter(lf)
        ## 记录器添加处理器
        logger.addHandler(sh)
        logger.addHandler(fh)
        cls.__logName = logger
        return cls.__logName
